home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 11 / CU Amiga Magazine's Super CD-ROM 11 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-06].iso / cucd / programming / oberonv4 / source / system / amigabsd.mod (.txt) < prev    next >
Oberon Text  |  1996-07-15  |  5KB  |  182 lines

  1. Syntax10.Scn.Fnt
  2. Syntax10b.Scn.Fnt
  3. MODULE AmigaBSD; (** 1996-07-15 RD *)
  4. IMPORT SYSTEM, AmigaExec, Console;
  5. CONST
  6.     bsdName*="bsdsocket.library";        minversion = 0;
  7.     bsdBase-: AmigaExec.LibraryPtr;
  8.     bsdVersion-: INTEGER;
  9.     termEntry: AmigaExec.TermEntry;
  10. PROCEDURE -ReturnD0    04EH,05EH,  04EH,075H;
  11. PROCEDURE accept*(s, adrPtr, adrlenPtr: LONGINT): LONGINT;
  12. BEGIN
  13.     SYSTEM.PUTREG( 0, s );
  14.     SYSTEM.PUTREG( 8, adrPtr );
  15.     SYSTEM.PUTREG( 9, adrlenPtr );
  16.     SYSTEM.CALL( -48, bsdBase );
  17.     ReturnD0
  18. END accept;
  19. PROCEDURE bind*(s, adrPtr, adrlen: LONGINT): LONGINT;
  20. BEGIN
  21.     SYSTEM.PUTREG( 0, s );
  22.     SYSTEM.PUTREG( 8, adrPtr );
  23.     SYSTEM.PUTREG( 1, adrlen );
  24.     SYSTEM.CALL( -36, bsdBase );
  25.     ReturnD0
  26. END bind;
  27. PROCEDURE close*(s: LONGINT): LONGINT;
  28. BEGIN
  29.     SYSTEM.PUTREG( 0, s );
  30.     SYSTEM.CALL( -78, bsdBase );
  31.     ReturnD0
  32. END close;
  33. PROCEDURE connect*(s, adrPtr, adrlen: LONGINT): LONGINT;
  34. BEGIN
  35.     SYSTEM.PUTREG( 0, s );
  36.     SYSTEM.PUTREG( 8, adrPtr );
  37.     SYSTEM.PUTREG( 1, adrlen );
  38.     SYSTEM.CALL( -54, bsdBase );
  39.     ReturnD0
  40. END connect;
  41. PROCEDURE gethostbyaddr*(adrPtr, len, type: LONGINT): LONGINT;
  42. BEGIN
  43.     SYSTEM.PUTREG( 8, adrPtr );
  44.     SYSTEM.PUTREG( 0, len );
  45.     SYSTEM.PUTREG( 1, type );
  46.     SYSTEM.CALL( -216, bsdBase );
  47.     ReturnD0
  48. END gethostbyaddr;
  49. PROCEDURE gethostbyname*(namePtr: LONGINT): LONGINT;
  50. BEGIN
  51.     SYSTEM.PUTREG( 8, namePtr );
  52.     SYSTEM.CALL( -210, bsdBase );
  53.     ReturnD0
  54. END gethostbyname;
  55. PROCEDURE gethostname*(namePtr, namelen: LONGINT): LONGINT;
  56. BEGIN
  57.     SYSTEM.PUTREG( 8, namePtr );
  58.     SYSTEM.PUTREG( 0, namelen );
  59.     SYSTEM.CALL( -282, bsdBase );
  60.     ReturnD0
  61. END gethostname;
  62. PROCEDURE getpeername*(s, adr, adrlenPtr: LONGINT): LONGINT;
  63. BEGIN
  64.     SYSTEM.PUTREG( 0, s );
  65.     SYSTEM.PUTREG( 8, adr );
  66.     SYSTEM.PUTREG( 9, adrlenPtr );
  67.     SYSTEM.CALL( -108, bsdBase );
  68.     ReturnD0
  69. END getpeername;
  70. PROCEDURE inetaddr*(cpPtr: LONGINT): LONGINT;
  71. BEGIN
  72.     SYSTEM.PUTREG( 8, cpPtr );
  73.     SYSTEM.CALL( -180, bsdBase );
  74.     ReturnD0
  75. END inetaddr;
  76. PROCEDURE ioctl*(s, cmd, argPtr: LONGINT): LONGINT;
  77. BEGIN
  78.     SYSTEM.PUTREG( 0, s );
  79.     SYSTEM.PUTREG( 1, cmd );
  80.     SYSTEM.PUTREG( 8, argPtr );
  81.     SYSTEM.CALL( -114, bsdBase );
  82.     ReturnD0
  83. END ioctl;
  84. PROCEDURE listen*(s, backlog: LONGINT): LONGINT;
  85. BEGIN
  86.     SYSTEM.PUTREG( 0, s );
  87.     SYSTEM.PUTREG( 1, backlog );
  88.     SYSTEM.CALL( -42, bsdBase );
  89.     ReturnD0
  90. END listen;
  91. PROCEDURE recv*(s, bufPtr, len, flag: LONGINT): LONGINT;
  92. BEGIN
  93.     SYSTEM.PUTREG( 0, s );
  94.     SYSTEM.PUTREG( 8, bufPtr );
  95.     SYSTEM.PUTREG( 1, len );
  96.     SYSTEM.PUTREG( 2, flag );
  97.     SYSTEM.CALL( -78, bsdBase );
  98.     ReturnD0
  99. END recv;
  100. PROCEDURE recvfrom*(s, bufPtr, len, flags, fromPtr, fromlenPtr: LONGINT): LONGINT;
  101. BEGIN
  102.     SYSTEM.PUTREG( 0, s );
  103.     SYSTEM.PUTREG( 8, bufPtr );
  104.     SYSTEM.PUTREG( 1, len );
  105.     SYSTEM.PUTREG( 2, flags );
  106.     SYSTEM.PUTREG( 9, fromPtr );
  107.     SYSTEM.PUTREG( 10, fromlenPtr );
  108.     SYSTEM.CALL( -72, bsdBase );
  109.     ReturnD0
  110. END recvfrom;
  111. PROCEDURE select*(nfds, readfdsPtr, writefdsPtr, exceptfdsPtr, timeoutPtr: LONGINT): LONGINT;
  112.     VAR Dummy: LONGINT;
  113. BEGIN
  114.     Dummy:=0;
  115.     SYSTEM.PUTREG( 0, nfds );
  116.     SYSTEM.PUTREG( 8, readfdsPtr );
  117.     SYSTEM.PUTREG( 9, writefdsPtr );
  118.     SYSTEM.PUTREG( 10, exceptfdsPtr );
  119.     SYSTEM.PUTREG( 11, timeoutPtr );
  120.     SYSTEM.PUTREG( 1, Dummy );
  121.     SYSTEM.CALL( -126, bsdBase );
  122.     ReturnD0
  123. END select;
  124. PROCEDURE send*(s, bufPtr, len, flag: LONGINT): LONGINT;
  125. BEGIN
  126.     SYSTEM.PUTREG( 0, s );
  127.     SYSTEM.PUTREG( 8, bufPtr );
  128.     SYSTEM.PUTREG( 1, len );
  129.     SYSTEM.PUTREG( 2, flag );
  130.     SYSTEM.CALL( -66, bsdBase );
  131.     ReturnD0
  132. END send;
  133. PROCEDURE sendto*(s, bufPtr, len, flags, toPtr, tolen: LONGINT): LONGINT;
  134. BEGIN
  135.     SYSTEM.PUTREG( 0, s );
  136.     SYSTEM.PUTREG( 8, bufPtr );
  137.     SYSTEM.PUTREG( 1, len );
  138.     SYSTEM.PUTREG( 2, flags );
  139.     SYSTEM.PUTREG( 9, toPtr );
  140.     SYSTEM.PUTREG( 3, tolen );
  141.     SYSTEM.CALL( -60, bsdBase );
  142.     ReturnD0
  143. END sendto;
  144. PROCEDURE setsockopt*(s, level, optname, optvalPtr, optlen: LONGINT): LONGINT;
  145. BEGIN
  146.     SYSTEM.PUTREG( 0, s );
  147.     SYSTEM.PUTREG( 1, level );
  148.     SYSTEM.PUTREG( 2, optname );
  149.     SYSTEM.PUTREG( 8, optvalPtr );
  150.     SYSTEM.PUTREG( 3, optlen );
  151.     SYSTEM.CALL( -90, bsdBase );
  152.     ReturnD0
  153. END setsockopt;
  154. PROCEDURE socket*(af, type, protocol: LONGINT): LONGINT;
  155. BEGIN
  156.     SYSTEM.PUTREG( 0, af );
  157.     SYSTEM.PUTREG( 1, type );
  158.     SYSTEM.PUTREG( 2, protocol );
  159.     SYSTEM.CALL( -30, bsdBase );
  160.     ReturnD0
  161. END socket;
  162. PROCEDURE OpenLib*();
  163. TYPE LibraryPtr = POINTER TO AmigaExec.Library;
  164. VAR lib : LibraryPtr;
  165. BEGIN
  166.     bsdBase:=AmigaExec.OpenLibrary(bsdName,minversion);
  167.     IF bsdBase#0 THEN
  168.         lib:=SYSTEM.VAL(LibraryPtr,bsdBase);
  169.         bsdVersion:=lib.version;
  170.     ELSE
  171.         Console.Str("Can't open bsdsocket.library. Please start AmiTCP."); Console.Ln;
  172.     END;
  173. END OpenLib;
  174. PROCEDURE CloseLib*();
  175. BEGIN
  176.     IF bsdBase#0 THEN AmigaExec.CloseLibrary( bsdBase ) END;
  177. END CloseLib;
  178. BEGIN
  179.     bsdBase:=0;
  180.     AmigaExec.Register(termEntry, CloseLib)
  181. END AmigaBSD.
  182.